<?php

session_start();
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
include 'Calculos.php';
//Datos de entrada 
//Viga
//Longitud: 10
//rodillo: posicion 0
//perno: posicion 8
//1 fuerza: 15 kips posicion 5 direccion negativa
//2 fuerza: 10 posicion 0 direccion negativa
//Longitud viga
//$longitudViga= $_POST['longitudViga'];
//Fuerzas
$fuerzas = array();
//array_push($fuerzas, $_POST['fuerza']);
//posicion fuerza
$posicionFuerza = array();
//array_push($posicionFuerza, $_POST['posicionFuerza']);
//tipo fuerza
$tipoFuerza = array();
//array_push($tipoFuerza, $_POST['tipoFuerza']);
//apoyos
$apoyos = array();
array_push($apoyos, 'rodillo');
array_push($apoyos, 'perno');
$resultFuerzas = 0;

$posicionApoyo = array();
array_push($posicionApoyo, 0);
array_push($posicionApoyo, 9);


$fuerzas = array();

array_push($fuerzas, '-15');
array_push($fuerzas, '-6');
array_push($fuerzas, '-6');

$posicionFuerza = array();
array_push($posicionFuerza, 3);
array_push($posicionFuerza, 11);
array_push($posicionFuerza, 13);

$tipoFuerza = array();
array_push($tipoFuerza, "puntual");
array_push($tipoFuerza, "puntual");
array_push($tipoFuerza, "puntual");

for ($i = 0; $i < count($tipoFuerza); $i++) {

    $comand = "findall(X, $tipoFuerza[$i], Resultado)";

    $exec = exec("c:/xampp/swipl/bin/swipl -f c:/Users/angye/Documents/Prolog/reglas.pl -g  \" $comand \"");
    $datosFuerzas = explode("-", $exec);
    echo ' <br>' . $tipoFuerza[$i];
    foreach ($datosFuerzas as $value) {

        echo '<br>' . $value;
        if (trim($value) === "Calculo Centroide") {
            $rango = explode("-", $fuerzas[$i]);
            $fuerzas[$i] = calcularCentroide($rango[0], $rango[1]);
//                echo ' centroide '. $fuerzas[$i];
        }
    }
}
foreach ($apoyos as $value) {

    $comand = "findall(X, $value, Resultado)";
    echo '<br>' . $value;
    $exec = exec("c:/xampp/swipl/bin/swipl -f c:/Users/angye/Documents/Prolog/reglas.pl -g  \" $comand \"");
    $datosApoyos = explode("-", $exec);
    foreach ($datosApoyos as $datoApoyo) {
        echo '<br>' . $datoApoyo;
    }
}
echo '<br>';
$resultFuerzas = 0;
//Sumar valores de la fuerza
foreach ($fuerzas as $valueF) {
    $resultFuerzas+=$valueF;
}


$formula1 = '';
$limit = 65 + count($apoyos);
$reacciones = "";

for ($i = 65; $i < $limit; $i++) {
    $reacciones.= chr($i);
    if ($i == $limit - 1) {
        $formula1.= chr($i);
    }else
        $formula1.= chr($i) . ' + ';
}
$incognitas = $formula1;
$formula1 .= ' = ' . ($resultFuerzas) * -1;

echo 'formula 1 ' . $formula1;


$formula2 = 0;
//Sumar valores de la fuerza
for ($i = 0; $i < count($fuerzas); $i++) {
    //fuerza por distancia
    $formula2 += $fuerzas[$i] * $posicionFuerza[$i];
}

for ($i = 0; $i < count($apoyos); $i++) {
    //fuerza por distancia
    if ($posicionApoyo[$i] == 0) {
        continue;
    }
    //r = -189  
    $valueR = $formula2;
    if($i == count($incognitas)){
        $formula2 .= ' = ';
    }else if($i!= 0)
         $formula2 .= ' + ';
    $formula2 .=  $posicionApoyo[$i] . substr($reacciones, $i, $i);
}

echo '<br> formula 2 ' . $formula2;

$numeroIncognitas = count(explode("+", $incognitas));

if ($numeroIncognitas > 2) {
    echo "<br> No tiene soluci&oacuten porque hay m&aacutes incognitas que ecuaciones ";
} else {
//        $comand = "findall(X, $value, Resultado)";
//        echo '<br>' . $value;
//        $exec = exec("c:/xampp/swipl/bin/swipl -f c:/Users/angye/Documents/Prolog/reglas.pl -g  \" $comand \"");
//crear matriz
//1 1 27
//0 9 189
    $f1 = array();
    $f2 = array();
    array_push($f1, "");
    array_push($f2, "");
    $incognitas = explode("+", $incognitas);

    foreach ($incognitas as $value) {
        //Si contiene la variable se agrega el valor al array
        $datosFormula = explode(trim($value), $formula2);

        if (count($datosFormula) > 1) {

            $dato = explode("=", $datosFormula[0]);
            array_push($f2, $dato[1]);
        }
        //Si no la contiene se agrega 0 al array
        else
            array_push($f2, 0);

        array_push($f1, 1);
    }
    array_push($f1, ($resultFuerzas) * -1);
    array_push($f2, $valueR * -1);

    $matriz = array();
    array_push($matriz, "");
    array_push($matriz, $f1);
    array_push($matriz, $f2);
    echo '<br> matriz generada ';

    foreach ($matriz as $val) {
        if ($val != null && $val != "") {
            foreach ($val as $value) {
                echo $value . ' | ';
            }
        }
        echo '<br>';
    }
    gaussJordan(count($apoyos), $matriz, $incognitas);
}
?>

